# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.FirebaseAppDistribution.V1.Model.GoogleFirebaseAppdistroV1Release do
  @moduledoc """
  A release of a Firebase app.

  ## Attributes

  *   `binaryDownloadUri` (*type:* `String.t`, *default:* `nil`) - Output only. A signed link (which expires in one hour) to directly download the app binary (IPA/APK/AAB) file.
  *   `buildVersion` (*type:* `String.t`, *default:* `nil`) - Output only. Build version of the release. For an Android release, the build version is the `versionCode`. For an iOS release, the build version is the `CFBundleVersion`.
  *   `createTime` (*type:* `DateTime.t`, *default:* `nil`) - Output only. The time the release was created.
  *   `displayVersion` (*type:* `String.t`, *default:* `nil`) - Output only. Display version of the release. For an Android release, the display version is the `versionName`. For an iOS release, the display version is the `CFBundleShortVersionString`.
  *   `firebaseConsoleUri` (*type:* `String.t`, *default:* `nil`) - Output only. A link to the Firebase console displaying a single release.
  *   `name` (*type:* `String.t`, *default:* `nil`) - The name of the release resource. Format: `projects/{project_number}/apps/{app_id}/releases/{release_id}`
  *   `releaseNotes` (*type:* `GoogleApi.FirebaseAppDistribution.V1.Model.GoogleFirebaseAppdistroV1ReleaseNotes.t`, *default:* `nil`) - Notes of the release.
  *   `testingUri` (*type:* `String.t`, *default:* `nil`) - Output only. A link to the release in the tester web clip or Android app that lets testers (which were granted access to the app) view release notes and install the app onto their devices.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :binaryDownloadUri => String.t() | nil,
          :buildVersion => String.t() | nil,
          :createTime => DateTime.t() | nil,
          :displayVersion => String.t() | nil,
          :firebaseConsoleUri => String.t() | nil,
          :name => String.t() | nil,
          :releaseNotes =>
            GoogleApi.FirebaseAppDistribution.V1.Model.GoogleFirebaseAppdistroV1ReleaseNotes.t()
            | nil,
          :testingUri => String.t() | nil
        }

  field(:binaryDownloadUri)
  field(:buildVersion)
  field(:createTime, as: DateTime)
  field(:displayVersion)
  field(:firebaseConsoleUri)
  field(:name)

  field(:releaseNotes,
    as: GoogleApi.FirebaseAppDistribution.V1.Model.GoogleFirebaseAppdistroV1ReleaseNotes
  )

  field(:testingUri)
end

defimpl Poison.Decoder,
  for: GoogleApi.FirebaseAppDistribution.V1.Model.GoogleFirebaseAppdistroV1Release do
  def decode(value, options) do
    GoogleApi.FirebaseAppDistribution.V1.Model.GoogleFirebaseAppdistroV1Release.decode(
      value,
      options
    )
  end
end

defimpl Poison.Encoder,
  for: GoogleApi.FirebaseAppDistribution.V1.Model.GoogleFirebaseAppdistroV1Release do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
